package org.inote.utils;

import org.inote.common.KeyStatus;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class FileUploadUtil {

    /**
     * 用户上传图片:笔记图片，用户头像
     * @param file
     * @param dirPath 文件夹(注意:该文件夹必须放在项目工程路径下，否则无法读出)
     * @param phone
     * @param type  若为KeyStatus.USER_IMG则表示上传用户头像，否则为笔记图片
     * @return
     */
    public static String uploadImage(MultipartFile file, String dirPath, String phone, String type) {
        //用户上传头像(图片)
        //判断所上传文件是否存在
        if(! file.isEmpty() && file.getSize() > 0){
            //获取上传文件的原始名称
            String originalFilename = file.getOriginalFilename();
            //设置上传文件的保存地址目录
            File filePath = new File(dirPath);
            //如果保存文件的地址不存在，就先创建目录
            if(!filePath.exists()){
                filePath.mkdirs();
            }
            //限制文件类型
            //设置图片的类型，文件上传的类型
            List<String> fileType = Arrays.asList("gif", "bmp", "jpg","tif","png");
            String exitType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            //判断exitType是否属于fileType里面的一个类型
            if (fileType.contains(exitType)) {
                if(type.equals(KeyStatus.USER_IMG)){
                    originalFilename = phone + "img." + exitType;
                }else{
                    originalFilename = System.currentTimeMillis() + "." + exitType;
                }
                try {
                    file.transferTo(new File(dirPath + originalFilename));
                } catch (IOException e) {
                    e.printStackTrace();
                }finally {
                    return originalFilename;
                }
            }
        }
        return null;
    }



}
